package com.ocean.system.service.impl;

import com.ocean.common.core.domain.entity.SysUser;
import com.ocean.common.utils.ShiroUtils;
import com.ocean.common.utils.StringUtils;
import com.ocean.resources.service.IOResourcesService;
import com.ocean.system.domain.SysFileConfDo;
import com.ocean.system.mapper.SysFileConfMapper;
import com.ocean.system.service.ISysFileConfService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


/**
 * @Author: FuGui Wang
 * @Description: 机构储存空间配置 业务层处理
 * @Date 2023/2/14
 * @Version V1.1.0
 */
@Service
public class SysFileConfServiceImpl implements ISysFileConfService {
    @Autowired
    private SysFileConfMapper fileConfMapper;

    @Autowired
    private IOResourcesService oResourcesService;

    /**
     * 查询机构储存空间配置
     * @param fileConf 检索条件
     * @return 数据集合
     */
    @Override
    public List<SysFileConfDo> selectFileconfList(SysFileConfDo fileConf) {
        List<SysFileConfDo> sysFileConfDos = fileConfMapper.selectFileconfList(fileConf);
        return sysFileConfDos;
    }

    /**
     * 新增 机构储存空间配置
     * @param fileConfDo 保存对象
     * @return 执行结果
     */
    @Override
    public int addSaveFileConf(SysFileConfDo fileConfDo) {
        // 获取用户缓存信息
        SysUser sysUser = ShiroUtils.getSysUser();
        if(StringUtils.isNotBlank(sysUser.getLoginName())){
            fileConfDo.setCreateBy(ShiroUtils.getLoginName());
        }
        if(StringUtils.isNotBlank(sysUser.getUserName())){
            fileConfDo.setCreateName(sysUser.getUserName());
        }
        // 1. TODO: 2023/2/16 保存 o_resources 表数据(暂时不明白为什么保存)
        /*OResources resourcesEntity = new OResources();
        resourcesEntity.setDepartId(fileConfDo.getDeptId());
        resourcesEntity.setResourcesName(fileConfDo.getFileDirPath());
        resourcesEntity.setResourcesDirPath(paramsService.getParamsValue("FILE_PATH", "/cloud/ocean/") + fileConfDo.getFileDirPath());
        resourcesEntity.setResourcesRemark("主目录（不可删除）");
        resourcesEntity.setCreateBy(sysUser.getLoginName());
        resourcesEntity.setCreateDate(new Date());
        resourcesEntity.setCreateName(sysUser.getUserName());
        oResourcesService.insertOResources(resourcesEntity);
        //创建物理文件夹
        File newfile = new File(resourcesEntity.getResourcesDirPath());
        if (!newfile.exists())
            newfile.mkdirs();*/
        // 2. TODO: 2023/2/16 保存日志数据（等日志模块做好再保存）
        // 3. 保存机构储存配置
        return fileConfMapper.addSaveFileConf(fileConfDo);
    }

    /**
     * 根据文件配置id查询数据
     * @param id 主键id
     * @return 数据实体对象
     */
    @Override
    public SysFileConfDo selectFileConfById(Integer id) {
        return fileConfMapper.selectFileConfById(id);
    }

    /**
     * 修改 机构储存空间配置
     * @param fileConfDo 实体对象
     * @return 执行结果
     */
    @Override
    public int updateFileConf(SysFileConfDo fileConfDo) {
        // 获取用户缓存信息
        SysUser sysUser = ShiroUtils.getSysUser();
        if(StringUtils.isNotBlank(sysUser.getLoginName())){
            fileConfDo.setUpdateBy(ShiroUtils.getLoginName());
        }
        if(StringUtils.isNotBlank(sysUser.getUserName())){
            fileConfDo.setUpdateName(sysUser.getUserName());
        }
        // 1. TODO: 2023/2/16 保存日志数据（等日志模块做好再保存）
        // 2. 保存机构储存配置
        return fileConfMapper.updateFileConf(fileConfDo);
    }

    /**
     * 批量删除 机构储存空间配置
     * @param ids 主键集合
     * @return 执行结果
     */
    @Override
    public int deleteFileConfByIds(String ids) {
        // 创建id集合
        List<String> list = new ArrayList<>();
        if(StringUtils.isNotBlank(ids)){
            if(!ids.contains(",")){
                list.add(ids);
            } else {
                String[] split = ids.split(",");
                list.addAll(Arrays.asList(split));
            }
        }
        return fileConfMapper.deleteFileConfByIds(list);
    }
}
